package com.priox.sigar.application.mappers;

import com.priox.sigar.client.dto.RangoDTO;
import com.priox.sigar.dto.ReporteContext;
import com.priox.sigar.client.dto.OperacionCuentaDTO;
import com.priox.sigar.dto.*;

import java.util.List;
import java.util.Map;

public interface ReporteMapper {
    /*** */
    public List<ReporteValidacionDTO> findReporteValidacion(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findAgrupacionAnno(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findAgrupacionAnnoCXA(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findTipoAnnoCxA(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findTipoUsuarioAnnoCxA(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findTipoProveedorAnnoCxA(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepCuentaCxA(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepCuentaSOLOCxA(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepCuentaMonedaCxA(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepMonedaCxA(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepMonedaSOLOCxA(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepNumPedidoTotalPositivo(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepNumPedidoTotalNegativo(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepNumPedidoTotalCero(ReporteContext reporteContext);

    public List<String> findDocumentoMontoMayor(Map parametros);

    public List<String> findDocumentoMontoMenor(Map parametros);

    public List<String> findDocumentoMontoCero(Map parametros);
    /*** */
    public List<RepAnnosCxPDTO> findRepUsuarioCxP(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepUsuario_CxA(ReporteContext reporteContext);
    public List<RepRangoCxPDTO> findRepUsuarioRangoCxP(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepUsuarioMonedaRangoCxP(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepAgrupacionRangoCxP(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepAgrupacionMonedaRangoCxP(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepUsuarioMonedaCxP(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepUsuarioMoneda_CxA(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepUsuarioAgrupacionCxP(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepProveedorCxP(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepProveedor_CxA(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepProveedorRangoCxP(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepProveedorMonedaRangoCxP(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepProveedorMonedaCxP(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepProveedorMoneda_CxA(ReporteContext reporteContext);
    public List<RepAnnosCxPDTO> findRepAgrupacionCxP(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepAgrupacionMonedaCxP(ReporteContext reporteContext);

    List<OperacionCuentaDTO> findRepDetalleCxP(Map parametros);

    List<OperacionCuentaDTO> findRepDetalleAgrupacionCxA(Map parametros);

    public List<RepSignoCxPDTO> findRepAgrupacionSigno(ReporteContext reporteContext);

    public List<RepAgComparativoAnnoCxPDTO> findComparativoAnnoCxP(ReporteContext parametros);

    public List<RepAnnosCxPDTO> findAgrupacionCuentaContable(ReporteContext parametros);

    public List<RepAgComparativoAnnoCxPDTO> findComparativoBaseAnnoCxP(ReporteContext reporteContext);

    public List<RepAgComparativoAnnoCxPDTO> findComparativoActualAnnoCxP(ReporteContext reporteContext);

    public List<RepAgComparativoAnnoCxPDTO> findComparativoDiferenciaAnnoCxP(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepAgrupacionMonedaRangoBC(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepCuentaRango(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepCuentaRangoBC(ReporteContext reporteContext);

    public List<RepAnnosCxPDTO> findRepAgrupacionCuentaBC(ReporteContext reporteContext);


    public List<RepRangoCxPDTO> findRepAgrupacionRango(ReporteContext reporteContext);
    public List<RepRangoCxPDTO> findRepAgrupacionSap(ReporteContext reporteContext);
    public List<RepRangoCxPDTO> findRepAgrupacionRangoDocumento(ReporteContext reporteContext);
    public List<RepRangoCxPDTO> findRepAgrupacionRelacionado(ReporteContext reporteContext);

    public List<RepRangoCxPDTO> findRepTotalAgrupacionProvicion(ReporteContext reporteContext);


    public List<RepPedidoPosicionCxADTO> findRepPedidoPosicionPositivo(ReporteContext reporteContext);

    List<RepAnnosCxPDTO> findRepoteAgrupacionCxA(ReporteContext reporteContext);

    List<RepAnnosCxPDTO> findRepoteAgrupacionCategoriaAnualCxA(ReporteContext reporteContext);

    List<RepAnnosCxPDTO> findRepoteAgrupacionCategoriaCxA(ReporteContext reporteContext);

    List<RepAnnosCxPDTO> findRepoteCategoriaTotalCxA(ReporteContext reporteContext);
    List<RepAnnosCxPDTO> findRepoteCategoriaDetalleCxA(ReporteContext reporteContext);

    List<RangoDTO> findAllRangoByUser(String login);

    void deleteRangoDetalle(Long rangoId);
}
